﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using MJM.SEDIC.EN;
using MJM.SEDIC.CN;

namespace wRegPadron.Formularios
{
    public partial class AccesosSEDIC : System.Web.UI.Page
    {
        AudiService.wsAud_Acc Auditoria = new AudiService.wsAud_Acc();
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                try
                {
                    string usuario = Session["Usuario"].ToString();
                    string pass = Request.QueryString["pass"].ToString();
                    rMenus.DataSource = MenuCN.Listar();
                    rMenus.DataBind();
                    lblTitulo.Text = "Opciones CEC";
                    lblDescripcion.Text = "Gestiona las opciones del CEC";
                    hfIdMenuSeleccionadoConsulta.Value = "0";
                    hfIdMenuSeleccionadoModificacion.Value = "0";
                    ddlMenu.DataSource = MenuCN.Listar();
                    ddlMenu.DataValueField = "ID";
                    ddlMenu.DataTextField = "Nombre";
                    ddlMenu.DataBind();
                    Auditoria.Inser_Acc(usuario, "Gestión", "Accesos CEC", "Acceso a las opciones del CEC", "", 1, "", System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString());
                }
                catch (Exception ex)
                {
                    Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
                }
            }
        }

        protected void rMenus_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            int seleccionado = Convert.ToInt32(((HiddenField)e.Item.FindControl("hfIdMenuSeleccionado")).Value);
            if (e.CommandName == "Mostrar")
            {
                hfIdMenuSeleccionadoConsulta.Value = seleccionado.ToString();
                rOpciones.DataSource = SubMenuCN.Listar(seleccionado);
                rOpciones.DataBind();
            }
            else if (e.CommandName == "Editar")
            {
                hfIdMenuSeleccionadoModificacion.Value = seleccionado.ToString();
                txtDescripcionMenu.Text = ((Label)e.Item.FindControl("lblDescripcionMenu")).Text;
                txtMenu.Text = ((Label)e.Item.FindControl("lblNombreMenu")).Text;
                txtPosicion.Text = ((Label)e.Item.FindControl("lblOrdenMenu")).Text;
                txtPosicion.ReadOnly = false;
                btnGuardaNuevoMenu.Visible = false;
                ddlMenu.Visible = false;
                btnGuardarMenu.Visible = true;
                ModalPopupExtender1.Show();
            }
        }

        protected void btnGuardarMenu_Click(object sender, EventArgs e)
        {
            MenuEN objMenuEN = new MenuEN();
            objMenuEN.ID = Convert.ToInt32(hfIdMenuSeleccionadoModificacion.Value);
            objMenuEN.Nombre = txtMenu.Text;
            objMenuEN.Descripcion = txtDescripcionMenu.Text;
            objMenuEN.Orden = Convert.ToInt32(txtPosicion.Text);
            int result = MenuCN.Actualizar(objMenuEN);
            if (result > 0)
            {
                rMenus.DataSource = MenuCN.Listar();
                rMenus.DataBind();
            }
        }

        protected void rOpciones_ItemCommand(object source, RepeaterCommandEventArgs e)
        {
            int seleccionado = Convert.ToInt32(((HiddenField)e.Item.FindControl("hfIdOpcionSeleccionado")).Value);
            int selectMenu = Convert.ToInt32(hfIdMenuSeleccionadoConsulta.Value);
            if (e.CommandName == "EditarOpcion")
            {
                ddlMenu.Visible = false;
                txtPosicionOpcion.ReadOnly = false;
                hfIdOpcionSeleccionadoModificacion.Value = seleccionado.ToString();
                SubMenuEN obj = SubMenuCN.Obtener(selectMenu, seleccionado);
                txtOpcion.Text = obj.Nombre;
                txtURL.Text = obj.URL;
                txtPosicionOpcion.Text = obj.Orden.ToString();
                txtDescripcionOpcion.Text = obj.Descripcion;
                if (obj.Prioritario == 1)
                {
                    rbNo.Checked = false;
                    rbSi.Checked = true;
                }
                else
                {
                    rbSi.Checked = false;
                    rbNo.Checked = true;
                }
                ModalPopupExtender2.Show();
            }
        }

        protected void btnGuardarOpcion_Click(object sender, EventArgs e)
        {
            string usuario = "";
            try
            {
                usuario = Session["Usuario"].ToString();
                SubMenuEN objSubMenuEN = new SubMenuEN();
                objSubMenuEN.Nombre = txtOpcion.Text;
                objSubMenuEN.Descripcion = txtDescripcionOpcion.Text;
                objSubMenuEN.Icono = fuIcono.PostedFile.FileName;
                objSubMenuEN.Archivo = fuIcono.FileBytes;
                objSubMenuEN.Menu = Convert.ToInt32(hfIdMenuSeleccionadoConsulta.Value);
                objSubMenuEN.SubMenu = Convert.ToInt32(hfIdOpcionSeleccionadoModificacion.Value);
                objSubMenuEN.Orden = Convert.ToInt32(txtPosicionOpcion.Text);
                objSubMenuEN.URL = txtURL.Text;
                if (rbSi.Checked)
                    objSubMenuEN.Prioritario = 1;
                else
                    objSubMenuEN.Prioritario = 0;
                int result=SubMenuCN.Actualizar(objSubMenuEN);
                if (result > 0)
                {
                    Auditoria.Inser_Acc(usuario, "Gestión", "Accesos CEC", "Nueva opción", "ID: " + result.ToString() + " - Nombre: " + objSubMenuEN.Nombre + " - Descripción: " + objSubMenuEN.Descripcion, 1, "", System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString());
                    rOpciones.DataSource = SubMenuCN.Listar(objSubMenuEN.Menu);
                    rOpciones.DataBind();
                }
            }
            catch (Exception ex)
            {
                Auditoria.Inser_Acc(usuario, "Gestión", "Accesos CEC", "Actualizar opción", "Error", 0, ex.Message + " - " + ex.StackTrace, System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString());
                Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
            }
        }

        protected void btnNuevoModulo_Click(object sender, EventArgs e)
        {
            txtMenu.Text = "";
            txtDescripcionMenu.Text = "";
            txtPosicion.Text = (Convert.ToInt32(((Label)rMenus.Items[rMenus.Items.Count - 1].FindControl("lblOrdenMenu")).Text) + 1).ToString();
            txtPosicion.ReadOnly = true;
            btnGuardaNuevoMenu.Visible = true;
            btnGuardarMenu.Visible = false;
            ModalPopupExtender1.Show();
        }

        protected void btnNuevaOpcion_Click(object sender, EventArgs e)
        {
            List<SubMenuEN> lst = SubMenuCN.Listar(Convert.ToInt32(ddlMenu.SelectedItem.Value));
            if (lst.Count > 0)
                txtPosicionOpcion.Text = (lst.Last().Orden + 1).ToString();
            else
                txtPosicionOpcion.Text = "1";
            txtPosicionOpcion.ReadOnly = true;
            txtOpcion.Text = "";
            txtDescripcionOpcion.Text = "";
            txtURL.Text = "";
            rbSi.Checked = true;
            btnGuardarOpcionNueva.Visible = true;
            btnGuardarOpcion.Visible = false;
            ddlMenu.Visible = true;
            ModalPopupExtender2.Show();
        }

        protected void btnGuardaNuevoMenu_Click(object sender, EventArgs e)
        {
            var obj = new MenuEN();
            obj.Nombre = txtMenu.Text;
            obj.Descripcion = txtDescripcionMenu.Text;
            obj.Orden = Convert.ToInt32(txtPosicion.Text);
            int result = MenuCN.Insertar(obj);
            if (result > 0)
            {
                rMenus.DataSource = MenuCN.Listar();
                rMenus.DataBind();
            }
        }

        protected void btnGuardarOpcionNueva_Click(object sender, EventArgs e)
        {
            string usuario = "";
            bool general = false;
            try
            {
                usuario = Session["Usuario"].ToString();
                SubMenuEN objSubMenuEN = new SubMenuEN();
                objSubMenuEN.Nombre = txtOpcion.Text;
                objSubMenuEN.Descripcion = txtDescripcionOpcion.Text;
                objSubMenuEN.Icono = fuIcono.FileName;
                objSubMenuEN.Archivo = fuIcono.FileBytes;
                objSubMenuEN.Menu = Convert.ToInt32(ddlMenu.SelectedItem.Value);
                objSubMenuEN.Orden = Convert.ToInt32(txtPosicionOpcion.Text);
                objSubMenuEN.URL = txtURL.Text + "?tp=1";
                if (rbSi.Checked)
                {
                    objSubMenuEN.Prioritario = 1;
                    general = true;
                }
                else
                {
                    objSubMenuEN.Prioritario = 0;
                    general = false;
                }
                int result = SubMenuCN.Insertar(objSubMenuEN);
                if (result > 0)
                {
                    Auditoria.Inser_Acc(usuario, "Gestión", "Accesos CEC", "Nueva opción", "ID: " + result.ToString() + " - Nombre: " + objSubMenuEN.Nombre + " - Descripción: " + objSubMenuEN.Descripcion, 1, "", System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString());
                    List<PermisoUsuarioEN> lstPermisoUsuario = PermisoUsuarioCN.Listar();
                    for (int i = 0; i < lstPermisoUsuario.Count; i++)
                    {
                        if (general)
                        {
                            var objAcceso = new AccesoEN();
                            objAcceso.IdPermiso = lstPermisoUsuario[i].ID;
                            objAcceso.IdSubMenu = result;
                            AccesoCN.Insertar(objAcceso);
                        }
                        else
                        {
                            if (PermisoUsuarioCN.EsContribuyente(lstPermisoUsuario[i].DNI))
                            {
                                var objAcceso = new AccesoEN();
                                objAcceso.IdPermiso = lstPermisoUsuario[i].ID;
                                objAcceso.IdSubMenu = result;
                                AccesoCN.Insertar(objAcceso);
                            }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Auditoria.Inser_Acc(usuario, "Gestión", "Accesos CEC", "Nueva opción", "Error", 0, ex.Message + " - " + ex.StackTrace, System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"].ToString());
                Response.Redirect("http://gestion.munijesusmaria.gob.pe/appweb/wperspad/Login.aspx");
            }
        }

        protected void ddlMenu_SelectedIndexChanged(object sender, EventArgs e)
        {
            List<SubMenuEN> lst = SubMenuCN.Listar(Convert.ToInt32(ddlMenu.SelectedItem.Value));
            if (lst.Count > 0)
                txtPosicionOpcion.Text = (lst.Last().Orden + 1).ToString();
            else
                txtPosicionOpcion.Text = "1";
            ModalPopupExtender2.Show();
        }

    }
}